/*
 * bootstrap table 跨页选择工具
 * 注意事项: 列表返回的数据请带有一个别名为 id 的id, 别名为 name 的name。
 *             数据传入时，需要id和name配对传入
 *             记得在bootstrap table设置getResponseHandler
 * auther : "zhaoshu",
 *
 * Date: 2017-05-22
 *
 */
function HFCrossPage() {

    //初始化table时影响前方法
    this.getResponseHandler = function (res) {
        var re = pagerTableResponseHandler(res);
        $.each(re.rows, function (i, r) {
            r.tableid = $.inArray(r.id, selectionIds) != -1;  //判断当前行的数据id是否存在与选中的数组，存在则将多选框状态变为true
        });
        return re;
    }


    //设置id和名字
    this.setIdsAndName = function (ids, names) {
        this.setSelectionIds(ids);
        this.setSelectionNames(names);
    }

    //设置选中ids
    this.setSelectionIds = function (ids) {
        if(ids) {
            selectionIds = ids.split(",");
        }
    }
    //获取选中的ids
    this.getSelectionIds = function () {
        return selectionIds.join(",");
    }

    //设置选中name
    this.setSelectionNames = function (names) {
        if(names) {
            selectionNames = names.split(",");
        }
    }
    //获取选中的名字, 如果你设置id, 不设置name的话是拿不到name的
    this.getSelectionNames = function () {
        return selectionNames.join(",");
    }

    //取消选择
    this.cancel = function cancel() {
        $(":checkbox").attr('checked', false);
        selectionIds = [];
    }

    this.init = function (table_id) {
        if(table_id)
            $table = $("#" + table_id);

        //绑定选中事件、取消事件、全部选中、全部取消
        $table.on('check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table', function (e, rows) {
            var ids = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
                return row.id;
            });
            var names = $.map(!$.isArray(rows) ? [rows] : rows, function (row) {
                return row.name;
            });
            func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
            selectionIds = _[func](selectionIds, ids, names);
        });
    }

    //-------------私有方法-----------
    var selectionIds = [];  //保存选中ids
    var selectionNames = [];  //保存选中的名字
    var $table = $("#bs-table");
    var union = function (array, ids, names) {
        $.each(ids, function (i, id) {
            if ($.inArray(id, array) == -1) {
                if(selectionNames.length == selectionIds.length) {
                    selectionNames[array.length] = names;
                }
                array[array.length] = id;
            }
        });
        return array;
    };
    //取消选中事件操作数组
    var difference = function (array, ids, names) {
        $.each(ids, function (i, id) {
            var index = $.inArray(id, array);
            if (index != -1) {
                if(selectionNames.length == selectionIds.length) {
                    selectionNames.splice(index, 1);
                }
                array.splice(index, 1);
            }
        });
        return array;
    };
    var _ = {"union": union, "difference": difference};

}
/*使用样例
在table attr 中加入
    data-response-handler="crossPage.getResponseHandler"

<script type="text/javascript">
    var crossPage = new HFCrossPage();
	$(function(){
		//调整body高度
        initDialogPanel();
	    initBSTable('bs-table', {});
        crossPage.init("bs-table");
        //crossPage.setIdsAndName("admin, wbq", "管理员, 王宝强");
        crossPage.setIdsAndName(
                getDialogData().ids,
                getDialogData().names
        );


        //获取数据
        crossPage.getSelectionIds();    //"admin, wbq"
        crossPage.getSelectionNames();  //"管理员, 王宝强"
	});
</script>

 */